package com.ldk.framework.service;

import java.util.List;

import com.ldk.framework.entity.CountBean;

import org.springframework.data.domain.Pageable;

import com.ldk.base.framework.service.IBaseService;
import com.ldk.framework.entity.Driver;
import com.ldk.framework.entity.DriverBindCar;
import com.ldk.framework.entity.LinkDriver;

/**
* DriverService接口类
* @author xiangwl
*/
public interface IDriverService extends IBaseService<Driver> {
	/**
	 * 根据openId判断司机是否存在
	 * @param dbKey
	 * @param openId
	 * @return
	 */
	Boolean existByOpenId(String dbKey, String openId);
	
	/**
	 * 根据openId获取司机信息
	 * @param dbKey
	 * @param openId
	 * @return
	 */
	Driver getDriverByOpenId(String dbKey, String openId);
	
	/**
	 * 获取关联司机信息
	 * @param dbKey
	 * @param openId
	 * @return
	 */
	LinkDriver getLinkDriver(String dbKey, String openId);
	
	/**
	 * 获取指定范围的用户列表
	 * @param dbKey
	 * @param query
	 * @param distance
	 * @return
	 */
	List<Driver> searchByDistance(String dbKey, Driver query, double distance, Pageable pageable);

	/**
	 * 生成6位固定ID号
	 */
	long generateDCommonId();

	/**
	 * 判断固定ID号是否存在
	 * @param dCommonId  固定ID号
	 * @return
	 */
	Boolean existDCommonId(long dCommonId);

	/**
	 * 奖励现金卷或优惠卷
	 * @param driver
	 * @return
	 */
	void insertCoupon(Driver driver);


	/**
	 * 查询城际通业务的绑定车辆的驾驶员
	 * @param dbKey
	 * @return
	 */
	List<DriverBindCar> findBindDriverList(String dbKey);

	/**
	 * 查询未绑定驾驶员的车辆
	 * @param dbKey
	 * @return
	 */
	List<DriverBindCar> findVehicleList(String dbKey);

	/**
	 * 查询后台统计分析
	 * @param dbKey
	 * @param companyId 为空查询所有
	 * @return
	 */
	CountBean countAnalysis(String dbKey,String companyId);
}
